package com.etime.shycourse.services.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.etime.shycourse.pojo.Coursetype;
import com.etime.shycourse.dao.CoursetypeMapper;
import com.etime.shycourse.services.interfaces.CoursetypeServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * 服务实现类
 *
 * @author wb
 * @since 2021-12-17
 */

@Service
public class CoursetypeServiceImpl implements CoursetypeServices {
    @Autowired
    private CoursetypeMapper mapper;

    /**
     * 增加课程类型
     * 添加子类时
     *
     * @param coursetype
     * @return Coursetype
     */
    @Override
    public int insertCourseType(Coursetype coursetype) {
        //数据接口中判断是否有 类型id属性值，
        Coursetype courseptypeid = mapper.selectById(coursetype.getCoursetypeid());
        if (courseptypeid != null) {
            //如果有，则修改该记录；
            return mapper.updateById(coursetype);
        }  //没有，则增加一条类型信息。
        return mapper.insert(coursetype);
    }

    /**
     * 查询课程类型
     *
     * @param coursetype 根据Courseptypeid查询
     * @return Coursetype
     */
    @Override
    public Coursetype selectCourseType(Coursetype coursetype) {
        return mapper.selectById(coursetype.getCoursetypeid());
    }

    /**
     * 查询课程所有类型列表
     * 查询条件：状态、可选择类型
     *
     * @return List<Coursetype>
     */
    @Override
    public List<Coursetype> selectCourseTypeList(Integer coursetypeicon) {
        QueryWrapper<Coursetype> wrapper = new QueryWrapper<>();
        wrapper.eq("coursetypestate", 1);
        if (coursetypeicon != null) {
            wrapper.and(w -> {
                w.eq("coursetypeicon", coursetypeicon).or().eq("courseptypeid", -1);
            });
        }
        return mapper.selectList(wrapper);
    }

    /**
     * 修改一条数据
     *
     * @param coursetype
     * @return int
     */
    @Override
    public int updateCourseType(Coursetype coursetype) {
        return mapper.updateById(coursetype);
    }

    /**
     * 增加课程类型功能
     * 添加父类时
     * courseptypeid 默认-1
     *
     * @param coursetype
     * @return Coursetype中的coursetypeid
     */
    @Override
    public Coursetype insertCourseTypeOne(Coursetype coursetype) {
        coursetype.setCourseptypeid(-1);
        int insert = mapper.insert(coursetype);
        if (insert > 0) {
            return coursetype;
        }
        return null;
    }
}
